<?php #ajax обработка выбора изображений
$elog->add($_FILES);
$elog->add($_POST);
//$elog->add($_SESSION);
/*Корневой файл*/
$root_path='../inc';
$err=$fs=$extensions=array();
/*Наличие необходимых POST данных*/
if(!isset($_POST['file_selector']) || !isset($_POST['file_selector']['root_path']) )
	$err='Ошибка при обращении';
else
{
	 $fs=$_POST['file_selector'];
	 if(!empty( $fs['extensions']))
		$extensions=explode('|',$fs['extensions']);
	if(!empty($fs['root_path']))
		$root_path.="/{$fs['root_path']}";
}
/*Ошибка при обращении*/
if($err)
	$ajax=$err;
/*Загрузка файла*/
elseif(isset($fs['upload']))
{
	/*Массив ошибок и загруженных файлов*/
	$fsloaded_files=$err=array();
	if(isset($_FILES['file_selector_upload_file'])&&isset($fs['selected_path'])&&isset($fs['create_dir']))
	{
		
		$path_to_script=!empty($fs['selected_path'])&&$fs['selected_path']!=='/'?$fs['selected_path']:'';
		/*Путь до папки назначения*/
		$fs_path=$root_path.$path_to_script;
		/*Название папки для создания*/
		$dir_to_create=getGoodUrl($fs['create_dir']);
		/*Путь до папки для создания*/
		$create_dir=false;
		if(!empty($fs['create_dir']))
		{
			$create_dir="$fs_path/$dir_to_create";
			$path_to_script.="/$dir_to_create";
		}
		if(!is_dir($fs_path))
			$err[]='папки, в которую вы хотите загрузить, файлы не существует';
		elseif(!$create_dir || is_dir($create_dir) || mkdir($create_dir,0766))
		{
			if($create_dir)
				$fs_path=$create_dir;
			$f=$_FILES['file_selector_upload_file'];
			foreach($f['tmp_name'] as $i=>$t_name)
				if(is_uploaded_file($t_name))
				{
					if(preg_match('#^(.+)\.(.+)$#',$f['name'][$i],$res))
					{
						$ext=strtolower($res[2]);
						$f_name=getGoodUrl($res[1]);
						$elog->add($extensions);
						/*только изображения для интернета*/
						if(in_array($ext,$extensions))
						{
							$f_name_ext="$f_name.$ext";
							$f_path="$fs_path/$f_name_ext";
							if(file_exists($f_path))
							{
								$err[]="файл '$path_to_script/$f_name_ext' уже существует";
								continue;
							}
							if(move_uploaded_file($t_name,$f_path))
								$fsloaded_files['<span class="_'.$ext.'"></span>'.$f_name_ext]="$path_to_script/$f_name_ext";
						}
						else $err[]= "файл '{$f['name'][$i]}' не загружен, допустимы только типы - ".implode(',',$extensions);			
					}
					else $err[]= "файл '{$f['name'][$i]}' не загружен";				
				}
		}
		else $err[]="Невозможно создать папку '$dir_to_create'";	
	}
	else $err[]='Ошибка загрузки';
	if(empty($path_to_script))$path_to_script='/';
	$ajax=getJSArr($err).'","'.getJSArr($fsloaded_files).'<script type="text/javascript">window.parent.file_selector.addUploadedFiles(\''.$path_to_script.'\','.getJSArr($err).','.getJSArr($fsloaded_files).');</script>';
}
else
{
	$path=$root_path;
	$selected_path='';
	$back_button='';
	$first=false;
	if(!empty($fs['selected_path']))
	{
		$selected_path=$fs['selected_path'];
		$path.=$selected_path;
		if($selected_path!='/')
		{
			$count=substr_count($selected_path,'/');
			$back='/';
			if($count>1)
				$back=preg_replace('#/[^/]+$#','',$selected_path);		
			$back_button='<li ondblclick="file_selector.changeDir(this,\''.$back.'\');"><span class="back"></span>Назад</li>';
		}
		else
			$selected_path='';
		$elog->to_write=array();
	}
	else
	{
		$first=true;
		/*Форма загрузки*/
		$ajax='<iframe id="ajax_frame" name="ajax_frame"></iframe>
		<ul class="errors"></ul>
		<form action="/admin/?ajax=select_file" target="ajax_frame" method="post" enctype="multipart/form-data" >
			<input type="hidden" name="file_selector[selected_path]" id="selected_path" value="'.$selected_path.'" />
			<input type="hidden" name="file_selector[upload]" value="1" />
			<input type="hidden" name="file_selector[root_path]" value="'.$fs['root_path'].'" />
			<input type="hidden" name="file_selector[extensions]" value="'.implode('|',$extensions).'" />
			<input type="text" name="file_selector[create_dir]" placeholder="Создать папку"/> '
			.$load->block('form_element',array('type'=>'file','name'=>'file_selector_upload_file[]','attr'=>'multiple="multiple"'))
			.$load->block('buttons',array('style'=>'load','type'=>'submit','text'=>'Загрузить'))
		.'</form>
	<div class="datas">
			<div class="file_list explorer">
				<div class="title">На сервере</div>';
	}
	
	$ajax.='<ul>'
			.$back_button;
			
	$dir=$load->module('file','getDir',array('path'=>$path,'extensions'=>$extensions));
	if($dir)
	{
		foreach($dir['dirs'] as $dir_name)
		$ajax.='<li ondblclick="file_selector.changeDir(this,\''.$selected_path.'/'.$dir_name.'\');"><span class="dir"></span>'.$dir_name.'</li>';
		foreach($dir['files'] as $file_name)
		{
			$ext=preg_match('#\.(.+)$#',$file_name,$res)?$res[1]:'file';		
			$ajax.='<li ondblclick="file_selector.selectFile(this,\''.$selected_path.'/'.$file_name.'\');"><span class="_'.$ext.'"></span>'.$file_name.'</li>';
		}
	}
	
	$ajax.='</ul>';
	if($first)
		$ajax.='</div>
		<div class="file_list selected">
			<div class="title">выбранные файлы</div>
			<ul></ul>
		</div>'
			.$load->block('buttons',array('attr'=>'onclick="file_selector.ok(this);" id="file_selector_ok"'))
	.'
		<div class="clear"></div></div>';
	
}
